function overloading in typescript